import { EntityTypeEnum, InputTypeEnum } from "./Enum"

export interface IVec2 {
    x: number
    y: number
}

export interface IActor {
    id: number
    hp:number
    type: EntityTypeEnum
    position: IVec2
    direction: IVec2
    weaponType:EntityTypeEnum
    bulletType:EntityTypeEnum
}

export interface IBullet {
    id: number
    type: EntityTypeEnum
    position: IVec2
    direction: IVec2
    owner: number
}

export interface IState {
    actors: IActor[]
    bullets: IBullet[]
    nextBulletId: number
    seed:number
}

export type IClientInput  = IActorMove | IWeaponShoot | ITimePast;

export interface IActorMove {
    id: number,
    type: InputTypeEnum.ActorMove,
    direction:{
        x,
        y
    },
    dt : number
}

export interface IWeaponShoot {
    type: InputTypeEnum.WeaponShoot
    owner: number
    position:IVec2
    direction:IVec2
}

export interface ITimePast {
    type: InputTypeEnum.TimePast
    dt:number
}